<?php 
class PersonaService
{
	
	static function setPersona()
	{
		$persona = new Persona();
		$persona->attributes = $_POST['Persona'];
		
		if(isset($_POST['Comunicacion'])) //estoy modificando o creando la comunicacion de la persona
		{
			$tmpComunicacion = array();
			$comunicacion = new Comunicacion();
			$comunicacion->attributes = $_POST['Comunicacion'];
			$tmpComunicacion[] = $comunicacion;
			$persona->comunicaciones = $tmpComunicacion;
		}
		
		if(isset($_POST['Direccion'])) //estoy modificando o creando la direccion de la persona
		{
			$tmpDireccion = array();
			$direccion = new Direccion();
			$direccion->attributes = $_POST['Direccion'];
			$direccion->direccion_estado_id = AplicacionVariables::ESTADO_ACTIVO_ID;
			$tmpDireccion[] = $direccion;
			$persona->direcciones = $tmpDireccion;
		}
		
		if(isset($_POST['PersonaEstudio'])) //estoy modificando o creando la direccion de la persona
		{
			$tmpEstudio = array();
			$estudio = new PersonaEstudio();
			$estudio->attributes = $_POST['PersonaEstudio'];
			$estudio->personaestudio_estado_id = AplicacionVariables::ESTADO_ACTIVO_ID;
			$estudio->personaestudio_persona_numerodocumento = $persona->persona_numerodocumento;
			$estudio->personaestudio_persona_tipodocumento_id = $persona->persona_tipodocumento_id;
			$tmpEstudio[] = $estudio;
			$persona->estudios = $tmpEstudio;
		}
		
		$persona->setIsNewRecord(false);
		
		if($persona->persona_numerodocumento != $persona->originalNumeroDoc 
			|| $persona->persona_tipodocumento_id != $persona->originalTipoDoc 
		)
		{//veo si existe persona
			
			if(	trim($persona->originalNumeroDoc) != '' 
				&& trim($persona->originalTipoDoc) != '' 
				)
			{
				$criteria = new CDbCriteria();
				$criteria->condition = "persona_estado_id = :estado AND persona_tipodocumento_id = :tipoDocumento AND persona_numerodocumento = :numeroDocumento";
				$criteria->params = array(
										':estado'=>AplicacionVariables::ESTADO_ACTIVO_ID,
										':tipoDocumento'=>$persona->persona_tipodocumento_id,
										':numeroDocumento'=>$persona->persona_numerodocumento
									);
				
				if(!is_null($persona->find($criteria)))
				{
					$persona->addError('persona_numerodocumento', t('Persona ya existe','persona_etiqueta'));
					return $persona;
				}
				
				//@todo mejorar esto agregar quien modifica y crea a comunicacion,estudio y direccion
				
			}
			else 
			{
				if(trim($persona->originalNumeroDoc) == '' && trim($persona->originalTipoDoc) == '' ) //no se uso el buscar
				{
					$criteria = new CDbCriteria();
					$criteria->condition = "persona_estado_id = :estado AND persona_tipodocumento_id = :tipoDocumento AND persona_numerodocumento = :numeroDocumento";
					$criteria->params = array(
											':estado'=>AplicacionVariables::ESTADO_ACTIVO_ID,
											':tipoDocumento'=>$persona->persona_tipodocumento_id,
											':numeroDocumento'=>$persona->persona_numerodocumento
										);
					
					if(!is_null($persona->find($criteria)))
					{
						$persona->addError('persona_numerodocumento', t('Persona ya existe','persona_etiqueta'));
						return $persona;
					}
				}
				
				$persona->persona_estado_id = AplicacionVariables::ESTADO_ACTIVO_ID;
				$persona->setIsNewRecord(true);
			}
		}
		return $persona;
	}
}

?>